力扣350. 两个数组的交集 II
给你两个整数数组 nums1 和 nums2 ，请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数，应与元素在两个数组中都出现的次数一致（如果出现次数不一致，则考虑取较小值）。可以不考虑输出结果的顺序。
https://leetcode.cn/problems/intersection-of-two-arrays-ii/description/

qsort
双指针

int comper(const void* _a, const void* _b) {
    int *a=(int*) _a, *b = (int*)_b;
    return *a == *b ? 0 : *a > *b ? 1 : -1;
}


int* intersect(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)
{   
    *returnSize=0;
    if(nums1Size==0||nums2Size==0)
    {
        return NULL;
    }
    //排序
    qsort(nums1,nums1Size,sizeof(int),comper);
    qsort(nums2,nums2Size,sizeof(int),comper);

 
    //默认数组1大
    if(nums1Size<nums2Size)
    {
        int *tmp=nums1; 
        nums1=nums2;
        nums2=tmp;
        int tmplen=nums1Size;
        nums1Size=nums2Size;
        nums2Size=tmplen;
    }
    int *ret=(int*)malloc(sizeof(int)*nums2Size);

    //双指针
    int index1=0;
    int index2=0;
    while(index1<nums1Size&&index2<nums2Size)
    {
        //小的指针走
        if(nums1[index1]<nums2[index2])
        {
            index1++;
        }
        else if(nums1[index1]>nums2[index2])
        {
            index2++;
        }
        else 
        {   //找到了，双指针一起走
            ret[*returnSize]=nums1[index1];
            *returnSize+=1;
            index1++;
            index2++;
        }
    }
    return ret;
}